package com.charging.entity;

import lombok.Data;
import java.util.Date;

/**
 * 故障报告实体类
 */
@Data
public class FaultReport {
    /**
     * 故障ID
     */
    private Long id;

    /**
     * 充电桩ID
     */
    private Long pileId;

    /**
     * 报告人ID
     */
    private Long reporterId;

    /**
     * 故障类型(POWER-电源, NETWORK-网络, SCREEN-屏幕, OTHER-其他)
     */
    private String faultType;

    /**
     * 故障描述
     */
    private String description;

    /**
     * 故障图片(多张图片URL,逗号分隔)
     */
    private String images;

    /**
     * 处理人ID
     */
    private Long handlerId;

    /**
     * 处理备注
     */
    private String handlerRemark;

    /**
     * 状态(REPORTED-已报告, PROCESSING-处理中, RESOLVED-已解决)
     */
    private Status  status;

    /**
     * 预计修复时间
     */
    private Date estimatedFixTime;

    /**
     * 实际修复时间
     */
    private Date actualFixTime;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getPileId() {
        return pileId;
    }

    public void setPileId(Long pileId) {
        this.pileId = pileId;
    }

    public Long getReporterId() {
        return reporterId;
    }

    public void setReporterId(Long reporterId) {
        this.reporterId = reporterId;
    }

    public String getFaultType() {
        return faultType;
    }

    public void setFaultType(String faultType) {
        this.faultType = faultType;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getImages() {
        return images;
    }

    public void setImages(String images) {
        this.images = images;
    }

    public Long getHandlerId() {
        return handlerId;
    }

    public void setHandlerId(Long handlerId) {
        this.handlerId = handlerId;
    }

    public String getHandlerRemark() {
        return handlerRemark;
    }

    public void setHandlerRemark(String handlerRemark) {
        this.handlerRemark = handlerRemark;
    }

    public Date getEstimatedFixTime() {
        return estimatedFixTime;
    }

    public void setEstimatedFixTime(Date estimatedFixTime) {
        this.estimatedFixTime = estimatedFixTime;
    }

    public Date getActualFixTime() {
        return actualFixTime;
    }

    public void setActualFixTime(Date actualFixTime) {
        this.actualFixTime = actualFixTime;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "FaultReport{" +
                "id=" + id +
                ", pileId=" + pileId +
                ", reporterId=" + reporterId +
                ", faultType='" + faultType + '\'' +
                ", description='" + description + '\'' +
                ", images='" + images + '\'' +
                ", handlerId=" + handlerId +
                ", handlerRemark='" + handlerRemark + '\'' +
                ", status='" + status + '\'' +
                ", estimatedFixTime=" + estimatedFixTime +
                ", actualFixTime=" + actualFixTime +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }

    public enum Status {
        PENDING, COMPLETED, FAILED
    }
}
